home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 42
/
Amiga Format AFCD42 (Issue 126, Aug 1999).iso
/
-serious-
/
sound
/
scope_xt4
/
src
/
precalc_fft_windows.s
< prev
next >
Wrap
Text File
|
1999-05-14
|
2KB
|
112 lines
;
; some precalculation routines for scope_xt4
; code by Smack/Infect!
; Tue 27-Apr-99
;
values set 504
maximum set 2^14
lea (output,pc),a0
fmovecr #$00,fp3
fadd fp3,fp3 ;2pi
move #values-1,d7
moveq #0,d6
bsr blackman
rts
;---------------------------------------------------------------------------
;
; pre-calculate BLACKMAN-window function
;
; y = maximum * ( 0.42 - 0.5 * cos( 2pi * x / values )
; + 0.08 * cos( 4pi * x / values ) )
;
blackman
fmove.x #0.42,fp4
fmove.x #-0.5,fp5
fmove fp3,fp6
fadd fp6,fp6 ;4pi
fmove.x #0.08,fp7
.loop
fmove.w d6,fp0
fmove.w #values,fp1
fdiv fp1,fp0
fmove fp0,fp2
fmul fp3,fp0
fcos fp0
fmul fp5,fp0
fmul fp6,fp2
fcos fp2
fmul fp7,fp2
fadd fp2,fp0
fadd fp4,fp0
fmove.w #maximum,fp1
fmul fp1,fp0
fint fp0
fmove.w fp0,(a0)+
addq #1,d6
dbf d7,.loop
rts
;---------------------------------------------------------------------------
;
; pre-calculate HAMMING-window function
;
; y = maximum * ( 0.54 - 0.46 * cos( 2pi * x / values ) )
;
hamming
fmove.x #0.54,fp4
fmove.x #-0.46,fp5
.loop
fmove.w d6,fp0
fmove.w #values,fp1
fdiv fp1,fp0
fmul fp3,fp0
fcos fp0
fmul fp5,fp0
fadd fp4,fp0
fmove.w #maximum,fp1
fmul fp1,fp0
fint fp0
fmove.w fp0,(a0)+
addq #1,d6
dbf d7,.loop
rts
;---------------------------------------------------------------------------
;
; pre-calculate HANNING-window function
;
; y = maximum * ( 0.5 - 0.5 * cos( 2pi * x / values ) )
;
hanning
fmove.x #0.5,fp4
fmove.x #-0.5,fp5
.loop
fmove.w d6,fp0
fmove.w #values,fp1
fdiv fp1,fp0
fmul fp3,fp0
fcos fp0
fmul fp5,fp0
fadd fp4,fp0
fmove.w #maximum,fp1
fmul fp1,fp0
fint fp0
fmove.w fp0,(a0)+
addq #1,d6
dbf d7,.loop
rts
output dc values